#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>

#define MAX_MSG_SIZE 100
#define MSG_KEY 1234

// 消息结构体
typedef struct {
    long mtype;
    char mtext[MAX_MSG_SIZE];
} Message;

int main() {
    int msgid;
    Message msg;

    // 创建消息队列
    if ((msgid = msgget(MSG_KEY, IPC_CREAT | 0666)) == -1) {
        perror("msgget");
        exit(1);
    }

    while (1) {
        char book_type[10];
        char book_name[50];

        printf("请输入书的类型（输入 0 停止放书）：");
        scanf("%s", book_type);

        if (strcmp(book_type, "0") == 0) {
            break;
        }

        printf("请输入书名：");
        scanf("%s", book_name);

        // 构造消息内容
        snprintf(msg.mtext, sizeof(msg.mtext), "%s %s", book_type, book_name);
        msg.mtype = 1;

        // 发送消息到队列
        if (msgsnd(msgid, &msg, strlen(msg.mtext) + 1, 0) == -1) {
            perror("msgsnd");
            exit(1);
        }

        printf("已放入 %s（类型：%s）到书架。\n", book_name, book_type);
    }

    return 0;
}    